package com.zhuss.lock;

import java.lang.annotation.*;

/**
 * 自定义 分布式锁 注解入口
 *
 * @Author zhushanshuo
 * @Date 2024-08-07 10:51:15
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface LockEnable {

    /**
     * 锁插件，默认 redis（后续可拓展）
     * @return
     */
    LockPluginEnum lockPlugin() default LockPluginEnum.crmSccRedisCache;

    /**
     * 所属系统
     * @return
     */
    LockSystemEnum system() default LockSystemEnum.CRM;

    /**
     * 所属模块
     * @return
     */
    LockModuleEnum module() default LockModuleEnum.MEMBER;

    /**
     * 对应具体操作
     * @return
     */
    LockActionEnum action() default LockActionEnum.ADD_MEMBER;

    /**
     * 加锁时间, 单位（毫秒）
     * @return
     */
    LockExpireEnum lockTime() default LockExpireEnum.MILL_30000;

    /**
     * 加锁的超时时间, 单位（毫秒）
     * @return
     */
    LockTimeoutEnum timeoutMill() default LockTimeoutEnum.MILL_800;

}
